package cara.tp1.server;

import cara.tp1.server.domain.Livre;
import cara.tp1.server.domain.Personne;

import javax.jws.WebParam;
import javax.jws.WebService;
import java.util.ArrayList;
import java.util.List;

/**
 * User: Simon BILLIAU
 * Date: 03/02/2014
 */
@WebService(endpointInterface = "cara.tp1.server.Bibliothecaire", name = "Bibliothecaire")
public class BibliothecaireImpl implements Bibliothecaire {

    BibliothequeImpl bibliotheque = BibliothequeImpl.getInstance();

    @Override
    public void ajouterLivre(@WebParam(name = "livre")Livre livre) {
        bibliotheque.ajouterLivre(livre);
    }

    @Override
    public void supprimerLivre(@WebParam(name = "livre")Livre livre) {
        bibliotheque.supprimerLivre(livre);
    }

    @Override
    public List<Livre> consulterLivreParAuteur(@WebParam(name = "auteur")String auteur){
        List<Livre> livres = bibliotheque.getLivreList();
        List<Livre> livreParAuteur = new ArrayList<Livre>();

        for (Livre livre : livres) {
            if(livre.getAuteur().toLowerCase().equals(auteur.toLowerCase())){
                livreParAuteur.add(livre);
            }

        }
        return  livreParAuteur;
    }

    @Override
    public List<Livre> consulterLivreParTitre(String titre) {

        List<Livre> livres = bibliotheque.getLivreList();
        List<Livre> livreParTitre = new ArrayList<Livre>();


        for (Livre livre : livres) {
            if(livre.getTitre().toLowerCase().equals(titre.toLowerCase())){
                livreParTitre.add(livre);
            }

        }

        return  livreParTitre;
    }

    @Override
    public List<Livre> consulterLivreParAuteurEtTitre(String auteur, String titre) {

        List<Livre> livres = bibliotheque.getLivreList();
        List<Livre> livreParAuteurEtTitre = new ArrayList<Livre>();

        for (Livre livre : livres) {
            if(livre.getTitre().toLowerCase().equals(titre.toLowerCase()) && livre.getAuteur().toLowerCase().equals(auteur.toLowerCase())){
                livreParAuteurEtTitre.add(livre);
            }

        }

        return  livreParAuteurEtTitre;
    }

    @Override
    public List<Personne> consulterPersonnes() {
        return bibliotheque.getPersonneList();
    }

    @Override
    public void supprimerPersonne(Personne personne) {
        bibliotheque.supprimmerPersonne(personne);
    }

    @Override
    public void ajouterPersonne(Personne personne) {
        bibliotheque.ajouterPersonne(personne);
    }
}
